{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "92586a19",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from sklearn.model_selection import train_test_split\n",
    "import os\n",
    "import sys\n",
    "import variable_encode as var_encode\n",
    "import tqdm\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.metrics import confusion_matrix,recall_score, auc, roc_curve,precision_score,accuracy_score\n",
    "from sklearn.metrics import roc_auc_score\n",
    "from sklearn.metrics import cohen_kappa_score\n",
    "from sklearn.metrics import precision_recall_curve\n",
    "from sklearn.model_selection import cross_val_score\n",
    "from sklearn.ensemble import GradientBoostingClassifier\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "import variable_bin_methods as vbm\n",
    "import pickle\n",
    "import copy\n",
    "import matplotlib.font_manager as fm\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib\n",
    "from sklearn.model_selection import GridSearchCV"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fc70cf7d",
   "metadata": {},
   "source": [
    "# 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "74eeca1b",
   "metadata": {},
   "outputs": [],
   "source": [
    "data_train_1 = pd.read_excel('最终2018年改变分箱最后19个特征数据的分箱.xlsx')\n",
    "data_test_1 = pd.read_excel('最终2019年-1改变分箱最后19个特征数据的分箱.xlsx')\n",
    "data_test_2 = pd.read_excel('最终2019年-2改变分箱最后19个特征数据的分箱.xlsx')\n",
    "data_test_3 = pd.read_excel('最终2019年-3改变分箱最后19个特征数据的分箱.xlsx')\n",
    "data_test_4 = pd.read_excel('最终2019年-4改变分箱最后19个特征数据的分箱.xlsx')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "02b52232",
   "metadata": {},
   "outputs": [],
   "source": [
    "data_train_1 = data_train_1.drop(columns = ['mths_since_recent_inq'])\n",
    "data_test_1 = data_test_1.drop(columns = ['mths_since_recent_inq'])\n",
    "data_test_2 = data_test_2.drop(columns = ['mths_since_recent_inq'])\n",
    "data_test_3 = data_test_3.drop(columns = ['mths_since_recent_inq'])\n",
    "data_test_4 = data_test_4.drop(columns = ['mths_since_recent_inq'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "5d1ca201",
   "metadata": {},
   "outputs": [],
   "source": [
    "    ####取出训练数据与测试数据\n",
    "var_all = list(data_train_1.columns)\n",
    "var_all.remove('loan_status')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cc764fe7",
   "metadata": {},
   "source": [
    "# 变量归一化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "405b7506",
   "metadata": {},
   "outputs": [],
   "source": [
    "####变量归一化\n",
    "scaler = StandardScaler().fit(data_train_1[var_all])\n",
    "data_train_1[var_all] = scaler.transform(data_train_1[var_all])  \n",
    "data_test_1[var_all] = scaler.transform(data_test_1[var_all])\n",
    "data_test_2[var_all] = scaler.transform(data_test_2[var_all])\n",
    "data_test_3[var_all] = scaler.transform(data_test_3[var_all])\n",
    "data_test_4[var_all] = scaler.transform(data_test_4[var_all])\n",
    "    \n",
    "x_train = np.array(data_train_1[var_all])\n",
    "y_train = np.array(data_train_1.loan_status)\n",
    "    \n",
    "x_test_1 = np.array(data_test_1[var_all])\n",
    "y_test_1 = np.array(data_test_1.loan_status)\n",
    "\n",
    "x_test_2 = np.array(data_test_2[var_all])\n",
    "y_test_2 = np.array(data_test_2.loan_status)\n",
    "\n",
    "x_test_3 = np.array(data_test_3[var_all])\n",
    "y_test_3 = np.array(data_test_3.loan_status)\n",
    "\n",
    "x_test_4 = np.array(data_test_4[var_all])\n",
    "y_test_4 = np.array(data_test_4.loan_status)     "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3dd49b6a",
   "metadata": {},
   "source": [
    "# 模型训练"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "9d92cc75",
   "metadata": {},
   "outputs": [],
   "source": [
    "GBDT_model= GradientBoostingClassifier(subsample=0.8,max_features=0.8, validation_fraction=0.1, \n",
    "                                                      n_iter_no_change =3,random_state=0 ,\n",
    "                                        n_estimators=50,\n",
    "                                        max_depth=4,\n",
    "                                        learning_rate=0.41)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "43de9fe0",
   "metadata": {},
   "outputs": [],
   "source": [
    "GBDT_model_fit = GBDT_model.fit(x_train, y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "91acc6fa",
   "metadata": {},
   "source": [
    "## 模型预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "eca4b2d2",
   "metadata": {},
   "outputs": [],
   "source": [
    "y_pred = GBDT_model_fit.predict(x_train)\n",
    "y_proba = GBDT_model_fit.predict_proba(x_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "53b80f8d",
   "metadata": {},
   "outputs": [],
   "source": [
    "y_pred_1 = GBDT_model_fit.predict(x_test_1)\n",
    "y_proba_1 = GBDT_model_fit.predict_proba(x_test_1)\n",
    "y_pred_2 = GBDT_model_fit.predict(x_test_2)\n",
    "y_proba_2 = GBDT_model_fit.predict_proba(x_test_2)\n",
    "y_pred_3 = GBDT_model_fit.predict(x_test_3)\n",
    "y_proba_3 = GBDT_model_fit.predict_proba(x_test_3)\n",
    "y_pred_4 = GBDT_model_fit.predict(x_test_4)\n",
    "y_proba_4 = GBDT_model_fit.predict_proba(x_test_4)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1312a989",
   "metadata": {},
   "source": [
    "# 模型评估"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "68ff5f7e",
   "metadata": {},
   "source": [
    "## 混淆矩阵"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "2e9f4e14",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>预测为好</th>\n",
       "      <th>预测为坏</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>标签为好</th>\n",
       "      <td>187235</td>\n",
       "      <td>7468</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>标签为坏</th>\n",
       "      <td>55143</td>\n",
       "      <td>10303</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        预测为好   预测为坏\n",
       "标签为好  187235   7468\n",
       "标签为坏   55143  10303"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cnf_matrix = confusion_matrix(y_train,y_pred)\n",
    "cnf_matrix = pd.DataFrame(cnf_matrix,index = [\"标签为好\",\"标签为坏\"],columns = ['预测为好','预测为坏'])\n",
    "cnf_matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "8c24591d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>预测为好</th>\n",
       "      <th>预测为坏</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>标签为好</th>\n",
       "      <td>23467</td>\n",
       "      <td>750</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>标签为坏</th>\n",
       "      <td>8308</td>\n",
       "      <td>1094</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       预测为好  预测为坏\n",
       "标签为好  23467   750\n",
       "标签为坏   8308  1094"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cnf_matrix1 = confusion_matrix(y_test_1,y_pred_1)\n",
    "cnf_matrix1 = pd.DataFrame(cnf_matrix1,index = [\"标签为好\",\"标签为坏\"],columns = ['预测为好','预测为坏'])\n",
    "cnf_matrix1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "14aa634b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>预测为好</th>\n",
       "      <th>预测为坏</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>标签为好</th>\n",
       "      <td>23249</td>\n",
       "      <td>876</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>标签为坏</th>\n",
       "      <td>8349</td>\n",
       "      <td>1121</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       预测为好  预测为坏\n",
       "标签为好  23249   876\n",
       "标签为坏   8349  1121"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cnf_matrix2 = confusion_matrix(y_test_2,y_pred_2)\n",
    "cnf_matrix2 = pd.DataFrame(cnf_matrix2,index = [\"标签为好\",\"标签为坏\"],columns = ['预测为好','预测为坏'])\n",
    "cnf_matrix2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "2d9d48b5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>预测为好</th>\n",
       "      <th>预测为坏</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>标签为好</th>\n",
       "      <td>23699</td>\n",
       "      <td>849</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>标签为坏</th>\n",
       "      <td>8168</td>\n",
       "      <td>1076</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       预测为好  预测为坏\n",
       "标签为好  23699   849\n",
       "标签为坏   8168  1076"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cnf_matrix3 = confusion_matrix(y_test_3,y_pred_3)\n",
    "cnf_matrix3 = pd.DataFrame(cnf_matrix3,index = [\"标签为好\",\"标签为坏\"],columns = ['预测为好','预测为坏'])\n",
    "cnf_matrix3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "a7c8f05d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>预测为好</th>\n",
       "      <th>预测为坏</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>标签为好</th>\n",
       "      <td>23362</td>\n",
       "      <td>796</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>标签为坏</th>\n",
       "      <td>8292</td>\n",
       "      <td>1091</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       预测为好  预测为坏\n",
       "标签为好  23362   796\n",
       "标签为坏   8292  1091"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cnf_matrix4 = confusion_matrix(y_test_4,y_pred_4)\n",
    "cnf_matrix4 = pd.DataFrame(cnf_matrix4,index = [\"标签为好\",\"标签为坏\"],columns = ['预测为好','预测为坏'])\n",
    "cnf_matrix4"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bc294356",
   "metadata": {},
   "source": [
    "## 评估指标"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "6ff2f084",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>准确率</th>\n",
       "      <th>AUC</th>\n",
       "      <th>KS值</th>\n",
       "      <th>kappa</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>GBDT</th>\n",
       "      <td>0.759326</td>\n",
       "      <td>0.71362</td>\n",
       "      <td>0.307775</td>\n",
       "      <td>0.157045</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           准确率      AUC       KS值     kappa\n",
       "GBDT  0.759326  0.71362  0.307775  0.157045"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "acc_GBDT = accuracy_score(y_train,y_pred)\n",
    "kappa_GBDT = cohen_kappa_score(y_train,y_pred)\n",
    "auc_GBDT = roc_auc_score(y_train, y_proba[:,1])\n",
    "fpr_GBDT, tpr_GBDT, thresholds_roc_GBDT = roc_curve(y_train,y_proba[:,1])\n",
    "ks_GBDT = max([trp_ - fpr_ for trp_, fpr_ in zip(tpr_GBDT, fpr_GBDT)])\n",
    "results = pd.DataFrame()\n",
    "results['准确率'] = [acc_GBDT]\n",
    "results['AUC'] = [auc_GBDT]\n",
    "results['KS值'] = [ks_GBDT]\n",
    "results['kappa'] = [kappa_GBDT]\n",
    "results.index = ['GBDT']\n",
    "results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "9aa54756",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>准确率_1</th>\n",
       "      <th>AUC_1</th>\n",
       "      <th>KS值_1</th>\n",
       "      <th>kappa_1</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>GBDT</th>\n",
       "      <td>0.730569</td>\n",
       "      <td>0.702095</td>\n",
       "      <td>0.293671</td>\n",
       "      <td>0.11323</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         准确率_1     AUC_1     KS值_1  kappa_1\n",
       "GBDT  0.730569  0.702095  0.293671  0.11323"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "acc_GBDT = accuracy_score(y_test_1,y_pred_1)\n",
    "kappa_GBDT = cohen_kappa_score(y_test_1,y_pred_1)\n",
    "auc_GBDT = roc_auc_score(y_test_1, y_proba_1[:,1])\n",
    "fpr_GBDT, tpr_GBDT, thresholds_roc_GBDT = roc_curve(y_test_1,y_proba_1[:,1])\n",
    "ks_GBDT = max([trp_ - fpr_ for trp_, fpr_ in zip(tpr_GBDT, fpr_GBDT)])\n",
    "results1 = pd.DataFrame()\n",
    "results1['准确率_1'] = [acc_GBDT]\n",
    "results1['AUC_1'] = [auc_GBDT]\n",
    "results1['KS值_1'] = [ks_GBDT]\n",
    "results1['kappa_1'] = [kappa_GBDT]\n",
    "results1.index = ['GBDT']\n",
    "results1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "4f5bcb0c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>准确率_2</th>\n",
       "      <th>AUC_2</th>\n",
       "      <th>KS值_2</th>\n",
       "      <th>kappa_2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>GBDT</th>\n",
       "      <td>0.725406</td>\n",
       "      <td>0.694265</td>\n",
       "      <td>0.282778</td>\n",
       "      <td>0.107932</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         准确率_2     AUC_2     KS值_2   kappa_2\n",
       "GBDT  0.725406  0.694265  0.282778  0.107932"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "acc_GBDT = accuracy_score(y_test_2,y_pred_2)\n",
    "kappa_GBDT = cohen_kappa_score(y_test_2,y_pred_2)\n",
    "auc_GBDT = roc_auc_score(y_test_2, y_proba_2[:,1])\n",
    "fpr_GBDT, tpr_GBDT, thresholds_roc_GBDT = roc_curve(y_test_2,y_proba_2[:,1])\n",
    "ks_GBDT = max([trp_ - fpr_ for trp_, fpr_ in zip(tpr_GBDT, fpr_GBDT)])\n",
    "results2 = pd.DataFrame()\n",
    "results2['准确率_2'] = [acc_GBDT]\n",
    "results2['AUC_2'] = [auc_GBDT]\n",
    "results2['KS值_2'] = [ks_GBDT]\n",
    "results2['kappa_2'] = [kappa_GBDT]\n",
    "results2.index = ['GBDT']\n",
    "results2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "ac964527",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>准确率_3</th>\n",
       "      <th>AUC_3</th>\n",
       "      <th>KS值_3</th>\n",
       "      <th>kappa_3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>GBDT</th>\n",
       "      <td>0.733162</td>\n",
       "      <td>0.697239</td>\n",
       "      <td>0.288923</td>\n",
       "      <td>0.108623</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         准确率_3     AUC_3     KS值_3   kappa_3\n",
       "GBDT  0.733162  0.697239  0.288923  0.108623"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "acc_GBDT = accuracy_score(y_test_3,y_pred_3)\n",
    "kappa_GBDT = cohen_kappa_score(y_test_3,y_pred_3)\n",
    "auc_GBDT = roc_auc_score(y_test_3, y_proba_3[:,1])\n",
    "fpr_GBDT, tpr_GBDT, thresholds_roc_GBDT = roc_curve(y_test_3,y_proba_3[:,1])\n",
    "ks_GBDT = max([trp_ - fpr_ for trp_, fpr_ in zip(tpr_GBDT, fpr_GBDT)])\n",
    "results3 = pd.DataFrame()\n",
    "results3['准确率_3'] = [acc_GBDT]\n",
    "results3['AUC_3'] = [auc_GBDT]\n",
    "results3['KS值_3'] = [ks_GBDT]\n",
    "results3['kappa_3'] = [kappa_GBDT]\n",
    "results3.index = ['GBDT']\n",
    "results3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "7e657c75",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>准确率_4</th>\n",
       "      <th>AUC_4</th>\n",
       "      <th>KS值_4</th>\n",
       "      <th>kappa_4</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>GBDT</th>\n",
       "      <td>0.729048</td>\n",
       "      <td>0.695394</td>\n",
       "      <td>0.28344</td>\n",
       "      <td>0.110261</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         准确率_4     AUC_4    KS值_4   kappa_4\n",
       "GBDT  0.729048  0.695394  0.28344  0.110261"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "acc_GBDT = accuracy_score(y_test_4,y_pred_4)\n",
    "kappa_GBDT = cohen_kappa_score(y_test_4,y_pred_4)\n",
    "auc_GBDT = roc_auc_score(y_test_4, y_proba_4[:,1])\n",
    "fpr_GBDT, tpr_GBDT, thresholds_roc_GBDT = roc_curve(y_test_4,y_proba_4[:,1])\n",
    "ks_GBDT = max([trp_ - fpr_ for trp_, fpr_ in zip(tpr_GBDT, fpr_GBDT)])\n",
    "results4 = pd.DataFrame()\n",
    "results4['准确率_4'] = [acc_GBDT]\n",
    "results4['AUC_4'] = [auc_GBDT]\n",
    "results4['KS值_4'] = [ks_GBDT]\n",
    "results4['kappa_4'] = [kappa_GBDT]\n",
    "results4.index = ['GBDT']\n",
    "results4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "6993403b",
   "metadata": {},
   "outputs": [],
   "source": [
    "acc1=[results1['准确率_1'],results2['准确率_2'],results3['准确率_3'],results4['准确率_4']]\n",
    "ac1=np.mean(acc1)\n",
    "bc1=np.std(acc1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "2cfd8f86",
   "metadata": {},
   "outputs": [],
   "source": [
    "acc2=[results1['AUC_1'],results2['AUC_2'],results3['AUC_3'],results4['AUC_4']]\n",
    "ac2=np.mean(acc2)\n",
    "bc2=np.std(acc2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "fcaec800",
   "metadata": {},
   "outputs": [],
   "source": [
    "acc3=[results1['KS值_1'],results2['KS值_2'],results3['KS值_3'],results4['KS值_4']]\n",
    "ac3=np.mean(acc3)\n",
    "bc3=np.std(acc3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "44f390a2",
   "metadata": {},
   "outputs": [],
   "source": [
    "acc4=[results1['kappa_1'],results2['kappa_2'],results3['kappa_3'],results4['kappa_4']]\n",
    "ac4=np.mean(acc4)\n",
    "bc4=np.std(acc4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "c6334f95",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>准确率的均值</th>\n",
       "      <th>准确率的方差</th>\n",
       "      <th>AUC的均值</th>\n",
       "      <th>KS值的均值</th>\n",
       "      <th>kappa的均值</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>GBDT</th>\n",
       "      <td>0.729546</td>\n",
       "      <td>0.002807</td>\n",
       "      <td>0.697248</td>\n",
       "      <td>0.287203</td>\n",
       "      <td>0.110012</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        准确率的均值    准确率的方差    AUC的均值    KS值的均值  kappa的均值\n",
       "GBDT  0.729546  0.002807  0.697248  0.287203  0.110012"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results11 =pd.DataFrame({'准确率的均值':{'GBDT':ac1},'准确率的方差':{'GBDT':bc1},\n",
    "                   'AUC的均值':{'GBDT':ac2},'KS值的均值':{'GBDT':ac3},\n",
    "                   'kappa的均值':{'GBDT':ac4}})\n",
    "results11"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "db8f15b2",
   "metadata": {},
   "source": [
    "## ROC和KS曲线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "9a4fb5a1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_proba_GBDT_1= y_proba_1\n",
    "fig,(axe1,axe2) = plt.subplots(1,2,sharey = True)\n",
    "for i in range(len(np.unique(y_test_1))):\n",
    "    fpr,tpr,thresholds = roc_curve(y_test_1,y_proba_GBDT_1[:,i],pos_label = i)\n",
    "axe1.plot(fpr,tpr)\n",
    "axe1.plot([0,1],[0,1])\n",
    "axe1.set_title('ROC')\n",
    "axe2.plot(1 - thresholds,tpr,label = 'TPR')\n",
    "axe2.plot(1 - thresholds,fpr,label = 'FPR')\n",
    "plt.xlim(0,)\n",
    "axe2.set_title('KS')\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "54cbf069",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_proba_GBDT_2= y_proba_2\n",
    "fig,(axe1,axe2) = plt.subplots(1,2,sharey = True)\n",
    "for i in range(len(np.unique(y_test_2))):\n",
    "    fpr,tpr,thresholds = roc_curve(y_test_2,y_proba_GBDT_2[:,i],pos_label = i)\n",
    "axe1.plot(fpr,tpr)\n",
    "axe1.plot([0,1],[0,1])\n",
    "axe1.set_title('ROC')\n",
    "axe2.plot(1 - thresholds,tpr,label = 'TPR')\n",
    "axe2.plot(1 - thresholds,fpr,label = 'FPR')\n",
    "plt.xlim(0,)\n",
    "axe2.set_title('KS')\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "2fa1d3af",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_proba_GBDT_3= y_proba_3\n",
    "fig,(axe1,axe2) = plt.subplots(1,2,sharey = True)\n",
    "for i in range(len(np.unique(y_test_3))):\n",
    "    fpr,tpr,thresholds = roc_curve(y_test_3,y_proba_GBDT_3[:,i],pos_label = i)\n",
    "axe1.plot(fpr,tpr)\n",
    "axe1.plot([0,1],[0,1])\n",
    "axe1.set_title('ROC')\n",
    "axe2.plot(1 - thresholds,tpr,label = 'TPR')\n",
    "axe2.plot(1 - thresholds,fpr,label = 'FPR')\n",
    "plt.xlim(0,)\n",
    "axe2.set_title('KS')\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "67f332a8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_proba_GBDT_4= y_proba_4\n",
    "fig,(axe1,axe2) = plt.subplots(1,2,sharey = True)\n",
    "for i in range(len(np.unique(y_test_4))):\n",
    "    fpr,tpr,thresholds = roc_curve(y_test_4,y_proba_GBDT_4[:,i],pos_label = i)\n",
    "axe1.plot(fpr,tpr)\n",
    "axe1.plot([0,1],[0,1])\n",
    "axe1.set_title('ROC')\n",
    "axe2.plot(1 - thresholds,tpr,label = 'TPR')\n",
    "axe2.plot(1 - thresholds,fpr,label = 'FPR')\n",
    "plt.xlim(0,)\n",
    "axe2.set_title('KS')\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "d72c74a1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_proba_GBDT_1= y_proba_1\n",
    "y_proba_GBDT_2= y_proba_2\n",
    "y_proba_GBDT_3= y_proba_3\n",
    "y_proba_GBDT_4= y_proba_4\n",
    "fig,(axe1,axe2) = plt.subplots(1,2,sharey = True)\n",
    "for i in range(len(np.unique(y_test_1))):\n",
    "    fpr_1,tpr_1,thresholds_1 = roc_curve(y_test_1,y_proba_GBDT_1[:,i],pos_label = i)\n",
    "for i in range(len(np.unique(y_test_2))):\n",
    "    fpr_2,tpr_2,thresholds_2 = roc_curve(y_test_2,y_proba_GBDT_2[:,i],pos_label = i)\n",
    "for i in range(len(np.unique(y_test_3))):\n",
    "    fpr_3,tpr_3,thresholds_3 = roc_curve(y_test_3,y_proba_GBDT_3[:,i],pos_label = i)\n",
    "for i in range(len(np.unique(y_test_4))):\n",
    "    fpr_4,tpr_4,thresholds_4 = roc_curve(y_test_4,y_proba_GBDT_4[:,i],pos_label = i)    \n",
    "axe1.plot(fpr_1,tpr_1)\n",
    "axe1.plot(fpr_2,tpr_2)\n",
    "axe1.plot(fpr_3,tpr_3)\n",
    "axe1.plot(fpr_4,tpr_4)\n",
    "axe1.plot([0,1],[0,1])\n",
    "axe1.set_title('ROC')\n",
    "axe2.plot(1 - thresholds_1,tpr_1,label = 'TPR')\n",
    "axe2.plot(1 - thresholds_1,fpr_1,label = 'FPR')\n",
    "axe2.plot(1 - thresholds_2,tpr_2,label = 'TPR')\n",
    "axe2.plot(1 - thresholds_2,fpr_2,label = 'FPR')\n",
    "axe2.plot(1 - thresholds_3,tpr_3,label = 'TPR')\n",
    "axe2.plot(1 - thresholds_3,fpr_3,label = 'FPR')\n",
    "axe2.plot(1 - thresholds_4,tpr_4,label = 'TPR')\n",
    "axe2.plot(1 - thresholds_4,fpr_4,label = 'FPR')\n",
    "plt.xlim(0,)\n",
    "axe2.set_title('KS')\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "511a46ab",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "matplotlib.rcParams['font.sans-serif']=['SimHei']   \n",
    "matplotlib.rcParams['axes.unicode_minus']=False  \n",
    "font={'family':'SimHei',\"size\":18}\n",
    "matplotlib.rc(\"font\",**font)\n",
    "fig=plt.figure(figsize=(5,5))\n",
    "plt.title('ROC曲线')\n",
    "plt.plot(fpr_1,tpr_1,color='g',label=\"ROC_1\")\n",
    "plt.plot(fpr_2,tpr_2,color='r',label=\"ROC_2\")\n",
    "plt.plot(fpr_3,tpr_3,color='b',label=\"ROC_3\")\n",
    "plt.plot(fpr_4,tpr_4,color='y',label=\"ROC_4\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "13e73579",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "matplotlib.rcParams['font.sans-serif']=['SimHei']   \n",
    "matplotlib.rcParams['axes.unicode_minus']=False  \n",
    "font={'family':'SimHei',\"size\":18}\n",
    "matplotlib.rc(\"font\",**font)\n",
    "fig=plt.figure(figsize=(5,5))\n",
    "plt.title('KS曲线')\n",
    "plt.plot(1 - thresholds_1,tpr_1,color='g',label='TPR')\n",
    "plt.plot(1 - thresholds_1,fpr_1,color='g',label='FPR')\n",
    "plt.plot(1 - thresholds_2,tpr_2,color='r',label='TPR')\n",
    "plt.plot(1 - thresholds_2,fpr_2,color='r',label='FPR')\n",
    "plt.plot(1 - thresholds_3,tpr_3,color='b',label='TPR')\n",
    "plt.plot(1 - thresholds_3,tpr_3,color='b',label='FPR')\n",
    "plt.plot(1 - thresholds_4,tpr_4,color='y',label='TPR')\n",
    "plt.plot(1 - thresholds_4,tpr_4,color='y',label='FPR')\n",
    "plt.xlim(0,)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e079f6cf",
   "metadata": {},
   "source": [
    "##  k折交叉检验"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "4c266fbe",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import KFold\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "from sklearn.model_selection import cross_val_score\n",
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\") ##忽略警告"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "fab51456",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>准确率均值</th>\n",
       "      <th>准确率标准差</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>GBDT</th>\n",
       "      <td>0.75767</td>\n",
       "      <td>0.000926</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        准确率均值    准确率标准差\n",
       "GBDT  0.75767  0.000926"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#ef muti_score(model):\n",
    "warnings.filterwarnings('ignore')\n",
    "accuracy = cross_val_score(GBDT_model, x_train, y_train, scoring='accuracy', cv=5)\n",
    "acc_mean=accuracy.mean()\n",
    "acc_std=accuracy.std()\n",
    "results = pd.DataFrame()\n",
    "results[\"准确率均值\"] = [acc_mean]\n",
    "results[\"准确率标准差\"] = [acc_std]\n",
    "results.index = ['GBDT']\n",
    "results\n",
    "#rint(\"准确率均值\",accuracy.mean())\n",
    "#rint(\"准确率方差\",accuracy.var())"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "120ac34e",
   "metadata": {},
   "source": [
    "## 模型psi的计算"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "e566ec5d",
   "metadata": {},
   "outputs": [],
   "source": [
    "def cal_psi(actual, predict, bins=10):\n",
    "    actual_min = actual.min()  # 实际中的最小概率\n",
    "    actual_max = actual.max()  # 实际中的最大概率\n",
    "    binlen = (actual_max - actual_min) / bins\n",
    "    cuts = [actual_min + i * binlen for i in range(1, bins)]#设定分组\n",
    "    cuts.insert(0, -float(\"inf\"))\n",
    "    cuts.append(float(\"inf\"))\n",
    "    actual_cuts = np.histogram(actual, bins=cuts)#将actual等宽分箱\n",
    "    predict_cuts = np.histogram(predict, bins=cuts)#将predict按actual的分组等宽分箱\n",
    "    actual_df = pd.DataFrame(actual_cuts[0],columns=['actual'])\n",
    "    predict_df = pd.DataFrame(predict_cuts[0], columns=['predict'])\n",
    "    psi_df = pd.merge(actual_df,predict_df,right_index=True,left_index=True)\n",
    "    psi_df['actual_rate'] = (psi_df['actual'] + 1) / psi_df['actual'].sum()#计算占比，分子加1，防止计算PSI时分子分母为0\n",
    "    psi_df['predict_rate'] = (psi_df['predict'] + 1) / psi_df['predict'].sum()\n",
    "    psi_df['psi'] = (psi_df['actual_rate'] - psi_df['predict_rate']) * np.log(\n",
    "        psi_df['actual_rate'] / psi_df['predict_rate'])\n",
    "    psi = psi_df['psi'].sum()\n",
    "    return psi, psi_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "03591dc9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.004317476889864848,\n",
       "    actual  predict  actual_rate  predict_rate       psi\n",
       " 0   37271     4980     0.143272      0.148160  0.000164\n",
       " 1   72075     9548     0.277057      0.284036  0.000174\n",
       " 2   60175     8102     0.231314      0.241024  0.000399\n",
       " 3   40702     5163     0.156460      0.153604  0.000053\n",
       " 4   25466     3142     0.097894      0.093489  0.000203\n",
       " 5   13872     1648     0.053327      0.049050  0.000358\n",
       " 6    6729      688     0.025870      0.020494  0.001252\n",
       " 7    2935      281     0.011286      0.008388  0.000860\n",
       " 8     849       64     0.003267      0.001933  0.000700\n",
       " 9      75        3     0.000292      0.000119  0.000156)"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "psi_values11=cal_psi(y_proba[:,1], y_proba_1[:,1],10)\n",
    "psi_values11"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "80d6849a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.002402465205469028,\n",
       "    actual  predict  actual_rate  predict_rate       psi\n",
       " 0   37271     4972     0.143272      0.148028  0.000155\n",
       " 1   72075     9526     0.277057      0.283584  0.000152\n",
       " 2   60175     7870     0.231314      0.234291  0.000038\n",
       " 3   40702     5184     0.156460      0.154338  0.000029\n",
       " 4   25466     3202     0.097894      0.095342  0.000067\n",
       " 5   13872     1710     0.053327      0.050930  0.000110\n",
       " 6    6729      781     0.025870      0.023277  0.000274\n",
       " 7    2935      275     0.011286      0.008216  0.000975\n",
       " 8     849       72     0.003267      0.002173  0.000446\n",
       " 9      75        3     0.000292      0.000119  0.000155)"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "psi_values12=cal_psi(y_proba[:,1], y_proba_2[:,1],10)\n",
    "psi_values12"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "aff32379",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.004337324459779135,\n",
       "    actual  predict  actual_rate  predict_rate       psi\n",
       " 0   37271     5149     0.143272      0.152403  0.000564\n",
       " 1   72075     9589     0.277057      0.283795  0.000162\n",
       " 2   60175     7888     0.231314      0.233458  0.000020\n",
       " 3   40702     5316     0.156460      0.157345  0.000005\n",
       " 4   25466     3172     0.097894      0.093898  0.000167\n",
       " 5   13872     1605     0.053327      0.047526  0.000668\n",
       " 6    6729      745     0.025870      0.022076  0.000602\n",
       " 7    2935      259     0.011286      0.007694  0.001376\n",
       " 8     849       65     0.003267      0.001953  0.000676\n",
       " 9      75        4     0.000292      0.000148  0.000098)"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "psi_values13=cal_psi(y_proba[:,1], y_proba_3[:,1],10)\n",
    "psi_values13"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "f05b84b1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.003796037918920037,\n",
       "    actual  predict  actual_rate  predict_rate       psi\n",
       " 0   37271     5131     0.143272      0.153007  0.000640\n",
       " 1   72075     9467     0.277057      0.282281  0.000098\n",
       " 2   60175     7842     0.231314      0.233833  0.000027\n",
       " 3   40702     5286     0.156460      0.157628  0.000009\n",
       " 4   25466     3135     0.097894      0.093498  0.000202\n",
       " 5   13872     1602     0.053327      0.047792  0.000607\n",
       " 6    6729      722     0.025870      0.021556  0.000787\n",
       " 7    2935      278     0.011286      0.008318  0.000905\n",
       " 8     849       75     0.003267      0.002266  0.000367\n",
       " 9      75        3     0.000292      0.000119  0.000155)"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "psi_values14=cal_psi(y_proba[:,1], y_proba_4[:,1],10)\n",
    "psi_values14"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "a53130f4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.0037133261185082617"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "bcc2=[psi_values11[0],psi_values12[0],psi_values13[0],psi_values14[0]]\n",
    "bbc2=np.mean(bcc2)\n",
    "bbc2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "99d347c5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PSI</th>\n",
       "      <th>PSI_1</th>\n",
       "      <th>PSI_2</th>\n",
       "      <th>PSI_3</th>\n",
       "      <th>PSI_4</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>GBDT</th>\n",
       "      <td>0.003713</td>\n",
       "      <td>0.004317</td>\n",
       "      <td>0.002402</td>\n",
       "      <td>0.004337</td>\n",
       "      <td>0.003796</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           PSI     PSI_1     PSI_2     PSI_3     PSI_4\n",
       "GBDT  0.003713  0.004317  0.002402  0.004337  0.003796"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results111 =pd.DataFrame({'PSI':{'GBDT':bbc2},'PSI_1':{'GBDT':psi_values11[0]},'PSI_2':{'GBDT':psi_values12[0]},\n",
    "                   'PSI_3':{'GBDT':psi_values13[0]},'PSI_4':{'GBDT':psi_values14[0]}})\n",
    "results111"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "cb49f38a",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "14a64890",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a87807eb",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8fcb7784",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
